// 1. 引入 luch-request
import Request from 'luch-request'
import { useUserStore }  from '@/stores'

// 2. 配置基地址
const http = new Request({
	baseURL: 'https://consult-api.itheima.net'
})

// 3. 设置请求拦截器
http.interceptors.request.use(
	(config) => {
		// 设置请求头
		const store = useUserStore()
		const token = store.user.token
		if(token){
			config.header.Authorization = `Bearer ${token}`
		}
		return config
	},
	(error) => {
		return Promise.reject(error)
	}
)

// 4. 响应拦截器
http.interceptors.response.use(
	(res) => {
		// 判断响应的状态码 如果不是10000
		// console.log(res, 22222)
		if (res.data.code !== 10000) {
			// 提示用户
			uni.showToast({
				icon:'error',
				title: res.data.message,
				mask: true
			})
			// 需要终止代码往下执行
			return Promise.reject(res.data)
		} 
		// 对数据进行解构
		return res.data
	},
	(error) => {
		// 处理401的错误
		if(error.statusCode === 401){
			const store = useUserStore()
			store.delUser()
			//跳转到登录页
			reLogin()
			return Promise.reject(error)
		}
		return Promise.reject(error)
	}
)



//保存tabbar页面
const tabbarList = [
	'pages/index/index',
	'pages/wiki/index',
	'pages/my/index',
	'pages/notify/index',
]

//用户跳转页面
const reLogin = () => {
	//获取页面栈
	const pages = getCurrentPages()
	//获取当前页面
	const currentPage = pages.at(-1)
	//获取完整路由
	const fullPath = currentPage.$page.fullPath
	//小程序有两种页面跳转，一种是tabbar页面，一种是普通页面
	const openType = tabbarList.includes(currentPage.$page.route) ? 'switchTab' : 'redirectTo'
	//将fullPath和openType记录到pinia里面
	const store = useUserStore()
	store.redirectURL = fullPath
	store.openType = openType
	//跳转到登录页
	uni.redirectTo({
		url:'/pages/login/index'
	})
}


export { http }